package com.changgou.system.service.impl;

import cn.hutool.core.util.ObjUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.changgou.system.dao.AdminMapper;
import com.changgou.system.pojo.Admin;
import com.changgou.system.service.AdminService;
import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class AdminServiceImpl extends ServiceImpl<AdminMapper,Admin> implements AdminService {

    @Resource
    private AdminMapper adminMapper;

    /**
     * 增加  进行 Bcrypt 加密
     * @param admin
     */
    @Override
    public void add(Admin admin){
//        密码和盐 进行 hashpw 加密。
        String password = BCrypt.hashpw(admin.getPassword(), BCrypt.gensalt());
        admin.setPassword(password);
        super.save(admin);
//        this.adminMapper.insert(admin);
    }

    @Override
    public boolean login(Admin admin) {
//        根据登录名查询管理员

        admin.setStatus("1");
//        Admin admin2 = this.getOne(this.lambdaQuery().eq(admin.getLoginName() != null, Admin::getLoginName, admin.getLoginName()));
////                .eq(admin.getStatus() != null, Admin::getStatus, admin.getStatus()));
//        先去查找。
        LambdaQueryWrapper<Admin> wrapper = Wrappers.<Admin>lambdaQuery().eq(admin.getLoginName() != null, Admin::getLoginName, admin.getLoginName());
        Admin admin2 = this.getOne(wrapper);
        if(ObjUtil.isEmpty(admin2)){
            return false;
        }else{
            //验证密码 ,BCrypt 为spring 的包，第一个参数为明文密码，第二个参数为密码密码。
            return BCrypt.checkpw(admin.getPassword(),admin2.getPassword());
        }
    }

}
